<!DOCTYPE html>
<html lang="en-us">
<head>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <title> 项目2 零基础制作游戏 </title>
  
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <meta name="robots" content="all,follow">
  <meta name="googlebot" content="index,follow,snippet,archive">
  <meta property="og:title" content="项目2 零基础制作游戏" />
<meta property="og:description" content="用 construct3 制作priests and devils 1. 环境准备 一台电脑 一个 construct3 账号  2. 入门学习 construct3是一款基于块方法的强大游戏引擎。使用它无需学习复杂编程语言的语法。每个块是左侧条件的列表。当满足这些条件时，它会在右侧执行操作，具有易于上手、功能强大的优点。 [编程与学习入口](https://editor.construct.net)  3. 制作 priests and devils 小游戏 先看最后的游戏效果图： 1. 游戏介绍 这款游戏是仿我们熟知的小游戏Priests and Devils设计的：
 Priests and Devils is a puzzle game in which you will help the Priests and Devils to cross the river within the time limit. There are 3 priests and 3 devils at one side of the river. They all want to get to the other side of this river, but there is only one boat and this boat can only carry two persons each time." />
<meta property="og:type" content="article" />
<meta property="og:url" content="https://beikenken.gitee.io/post/%E9%A1%B9%E7%9B%AE2/" />
<meta property="article:published_time" content="2020-10-07T19:18:51+08:00" />
<meta property="article:modified_time" content="2020-10-07T19:18:51+08:00" />

  <meta name="twitter:card" content="summary"/>
<meta name="twitter:title" content="项目2 零基础制作游戏"/>
<meta name="twitter:description" content="用 construct3 制作priests and devils 1. 环境准备 一台电脑 一个 construct3 账号  2. 入门学习 construct3是一款基于块方法的强大游戏引擎。使用它无需学习复杂编程语言的语法。每个块是左侧条件的列表。当满足这些条件时，它会在右侧执行操作，具有易于上手、功能强大的优点。 [编程与学习入口](https://editor.construct.net)  3. 制作 priests and devils 小游戏 先看最后的游戏效果图： 1. 游戏介绍 这款游戏是仿我们熟知的小游戏Priests and Devils设计的：
 Priests and Devils is a puzzle game in which you will help the Priests and Devils to cross the river within the time limit. There are 3 priests and 3 devils at one side of the river. They all want to get to the other side of this river, but there is only one boat and this boat can only carry two persons each time."/>

  
  
  
  <link rel="stylesheet" href="https://beikenken.gitee.io/css/style-white.css">
  
    <!--[if lt IE 9]>
      <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
      <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
    <![endif]-->
  

  
<link rel="icon" type="image/png" href="https://beikenken.gitee.io/images/favicon.ico" />

  
</head>
<body class="max-width mx-auto px3 ltr">
  <div class="content index py4">

    <header id="header">
  <a href="https://beikenken.gitee.io">
  
    <div id="logo" style="background-image: url(https://beikenken.gitee.io/images/logo.png)"></div>
  
  <div id="title">
    <h1>【18342131】的软导作业索引页   全部博客:beikenken.gitee.io/post</h1>
  </div>
  </a>
  <div id="nav">
    <ul>
      <li class="icon">
        <a href="#"><i class="fas fa-bars fa-2x"></i></a>
      </li>
      
    </ul>
  </div>
</header>
  

    
<article class="post" itemscope itemtype="http://schema.org/BlogPosting">

  <div class="content" itemprop="articleBody">
  
    <h1 id="用-construct3-制作priests-and-devils">用 construct3 制作priests and devils</h1>
<h2 id="1-环境准备">1. 环境准备</h2>
<pre><code>一台电脑
一个 construct3 账号
</code></pre>
<h2 id="2-入门学习">2. 入门学习</h2>
<pre><code>construct3是一款基于块方法的强大游戏引擎。使用它无需学习复杂编程语言的语法。每个块是左侧条件的列表。当满足这些条件时，它会在右侧执行操作，具有易于上手、功能强大的优点。
[编程与学习入口](https://editor.construct.net)
</code></pre>
<h2 id="3-制作-priests-and-devils-小游戏">3. 制作 priests and devils 小游戏</h2>
<p>先看最后的游戏效果图：
<img src="/img/%E6%95%88%E6%9E%9C%E5%9B%BE.png" alt="alt"></p>
<h3 id="1-游戏介绍">1. 游戏介绍</h3>
<p>这款游戏是仿我们熟知的小游戏Priests and Devils设计的：</p>
<blockquote>
<p>Priests and Devils is a puzzle game in which you will help the Priests and Devils to cross the river within the time limit. There are 3 priests and 3 devils at one side of the river. They all want to get to the other side of this river, but there is only one boat and this boat can only carry two persons each time. And there must be one person steering the boat from one side to the other side. In the flash game, you can click on them to move them and click the go button to move the boat to the other direction. If the priests are out numbered by the devils on either side of the river, they get killed and the game is over. You can try it in many &gt; ways. Keep all priests alive! Good luck!</p>
</blockquote>
<p>简而言之，游戏开始时有一艘小船，河一岸有三个牧师和三个魔鬼，我们要做的就是用小船载这六个人过河，每趟最多只能载两人，船上必须有一个人操纵船往返，河两岸的魔鬼都不能多于牧师，否则牧师被魔鬼吃掉，游戏失败。六个人都安全过河时游戏成功。</p>
<h3 id="2-创建项目">2. 创建项目</h3>
<p>打开 construct3 编程网站：
<img src="/img/%E6%96%B0%E5%BB%BA%E9%A1%B9%E7%9B%AE.png" alt="alt"></p>
<p>点击“新建项目”，命名为“priests and devils”。
<img src="/img/pad.png" alt="alt"></p>
<p>首先我们看到，左边栏目下是该项目的结构，有<code>场景</code>，<code>事件表</code>，<code>脚本</code>，<code>对象</code>，<code>家族对象</code>，<code>时间轴</code>，<code>声音</code>，等等……本游戏比较简单，只涉及了前三位。</p>
<h3 id="3-添加对象">3. 添加对象</h3>
<p>本来创建完项目后第一步是选择背景，这里我省去了，直接从创建对象开始，从游戏介绍中我们可以知道，本游戏对象一定有 <code>河水</code>、<code>2个河岸</code>、<code>1艘小船</code>、<code>三个牧师</code>和<code>三个魔鬼</code>。construct3 允许我们选择自己的图像作为游戏对象，因此我们可以先在网上找合适的图。</p>
<p>河水：
<img src="/img/%E6%B2%B3%E6%B0%B4.png" alt="alt"></p>
<p>河岸：
<img src="/img/%E6%B2%B3%E5%B2%B8.png" alt="alt"></p>
<p>小船：
<img src="/img/%E5%B0%8F%E8%88%B9.png" alt="alt"></p>
<p>牧师：
<img src="/img/%E7%89%A7%E5%B8%88.png" alt="alt"></p>
<p>魔鬼：
<img src="/img/%E9%AD%94%E9%AC%BC.png" alt="alt"></p>
<p>我们先创建Sprite, 然后在动画编辑器中分别将图片拖进去，改名为<code>小河</code>，……。做完这一步之后，由于河岸，牧师和魔鬼有多个，我们可以选择克隆出需要的数量，如图所示：
<img src="/img/%E5%AF%B9%E8%B1%A1.png" alt="alt"></p>
<p>创建好对象后将对象拖入场景中。此外，基于我的想法，之后还会逐步加入其他对象。
<img src="/img/%E5%88%86%E8%A7%A3.jpg" alt="alt"></p>
<h3 id="4-给各对象添加实例变量">4. 给各对象添加实例变量</h3>
<p>游戏设计：小船要载6人从右岸到左岸。</p>
<p>船位于右边时：
（1）鼠标点击右岸的恶魔或者牧师时，点击的对象移动到船上固定位置；</p>
<p>（2）鼠标点击船上的对象时，对象回到岸边的固定位置。</p>
<p>（3）当船上已有2人时，鼠标再点击右岸对象也无法上船。</p>
<p>（4）鼠标点击左岸的对象时对象不能移动。</p>
<p>（5）船上起码有一个对象（牧师或魔鬼）时才能移动到左岸。</p>
<p>（6）“移动”这一行为用点击“OK”按钮事件来触发。</p>
<p>船移动到左边时：
（1）鼠标点击船上的恶魔或者牧师时，点击的对象移动到左岸固定位置。</p>
<p>（2）鼠标点击左岸的牧师或魔鬼时，点击对象回到船上。</p>
<p>（3）鼠标点击右岸的对象时对象不能移动。</p>
<p>（4）若船需要返程，船上起码有一个对象（牧师或魔鬼）时才能移动到右岸。</p>
<p>（5）“移动”这一行为用点击“OK”按钮事件来触发。</p>
<p>游戏全程要比较每个河岸的牧师与魔鬼的数量，一旦魔鬼多于牧师，游戏结束，宣告失败，弹出“You Lose!”和“restart&rdquo;。魔鬼和牧师完全到达左岸后，游戏结束，宣告成功，弹出“You Win!&ldquo;和“restart&rdquo;。鼠标点击“restart”可以重新开始游戏。</p>
<p>基于以上设计，我们需要：
（1）继续添加对象:Mouse（命名为鼠标），2个OK按钮（命名为go（场景中的右边按钮）和leave（场景中的左边按钮））。</p>
<p>（2）对河岸1、2和小船对象分别增加6个图像原点，用于确定牧师和魔鬼的位置；对河水增加两个图像原点，用于确定小船的位置。</p>
<p>（3）为以下对象添加实例变量并初始化：</p>
<p>河岸：两个变量存储河岸1上的魔鬼和牧师的数量，分别初始化为3。
<img src="/img/%E6%B2%B3%E5%B2%B81.png" alt="alt"></p>
<p><img src="/img/%E6%B2%B3%E5%B2%B82.png" alt="alt"></p>
<p>小船：<code>人数</code>变量存储船上的人数，<code>标志</code>变量判断船是位于左边还是右边。右边为0，左边为1。游戏开始时船应该位于左边，初始化为0。
<img src="/img/%E5%B0%8F%E8%88%B9%E5%AE%9E%E4%BE%8B%E5%8F%98%E9%87%8F.png" alt="alt"></p>
<p>恶魔1-3和牧师1-3：只有一个变量<code>位置</code>，即判断对象所处的位置。对象在右岸时位置为0，船上时为1，左岸时为2，游戏结束时为-1。游戏开始时对象全部位于右岸，初始化为0。
<img src="/img/sprite.png" alt="alt"></p>
<h3 id="5-添加事件">5. 添加事件</h3>
<p>（1）对象从右岸移动到船上（以牧师1为例）
<img src="/img/%E5%8F%B3%E7%A7%BB%E8%88%B9.png" alt="alt"></p>
<p>（2）对象从右边船上回到右岸（以牧师1为例）
<img src="/img/%E4%BA%BA%E7%A7%BB%E5%8F%B3.png" alt="alt"></p>
<p>（3）船从右边移到左边
<img src="/img/%E8%88%B9%E5%BE%80%E5%B7%A6.png" alt="alt"></p>
<p>（4）左边船上的人上到左岸（以牧师1为例）
<img src="/img/%E4%BA%BA%E7%A7%BB%E5%B7%A6.png" alt="alt"></p>
<p>（5）左岸的人上船（以牧师1为例）
<img src="/img/%E5%B7%A6%E5%B2%B8%E7%9A%84%E4%BA%BA%E4%B8%8A%E8%88%B9.png" alt="alt"></p>
<p>（6）游戏失败判断
<img src="/img/%E5%88%A4%E6%96%AD1.png" alt="alt"></p>
<p><img src="/img/%E5%88%A4%E6%96%AD2.png" alt="alt"></p>
<p>（7）游戏成功判断
<img src="/img/%E5%88%A4%E6%96%AD3.png" alt="alt"></p>
<p>（8）失败时重新开始游戏
<img src="/img/%E9%87%8D%E5%90%AF2.png" alt="alt"></p>
<p>（9）成功时重新开始游戏
<img src="/img/%E9%87%8D%E5%90%AF1.png" alt="alt"></p>
<p>以上是这个游戏的主要事件。其实这个游戏有31个事件，剩余事件是对以上<code>以牧师1为例</code>的事件的不同对象的重复。</p>
<h3 id="6-游戏视频与游戏链接">6. 游戏视频与游戏链接</h3>
<p>游戏演示视频放在B站：<!-- raw HTML omitted --><a href="https://www.bilibili.com/video/BV1Ei4y1E7dq/">https://www.bilibili.com/video/BV1Ei4y1E7dq/</a><!-- raw HTML omitted --></p>
<p>游戏链接：<!-- raw HTML omitted --><a href="https://www.construct.net/en/free-online-games/priests-devils-18420/play">https://www.construct.net/en/free-online-games/priests-devils-18420/play</a><!-- raw HTML omitted --></p>

  
  </div>
</article>


    <footer id="footer">
  <div class="footer-left">
    Copyright  &copy; 2021  【18342131】的软导作业索引页   全部博客:beikenken.gitee.io/post 
  </div>
  <div class="footer-right">
    <nav>
      <ul>
        
      </ul>
    </nav>
  </div>
</footer>


  </div>
  
</body>

<link rel="stylesheet" href="/lib/font-awesome/css/all.min.css">
<script src="/lib/jquery/jquery.min.js"></script>
<script src="/js/main.js"></script>
</html>
